package ch12;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;



public class MyFileWriter {

	public static void main(String[] args) {
		charWrite();		
	}
		private static void charWrite() {
			
			File file = new File("c:/temp/abc.txt");
			file.getParentFile().mkdirs();
			

			FileWriter writer = null;
			
			try {
				if(file.exists()) {
					//file.delete();
					//System.out.println("删除文件");
					//file.createNewFile();
				}else {
					file.createNewFile();
				}
				
				System.out.println("新建文件成功");
				writer = new FileWriter(file,true);//以追加方式打开文件流；注意：默认参数false，会清空原有内容，重写写入数据
				for(int i=0;i<100;i++) {
					String str = "你好，java文件读写!\r\n";
					writer.write(str);//字符流可以使用char数组或字符串进行输出数据
				}
				
			} catch (IOException e) {
				
				e.printStackTrace();
			}finally {
				if(writer!=null) {
					try {
						writer.close();//调用close方法前，会默认调用flush刷新缓存
					} catch (IOException e) {
					}
				}
			}
		}
	
	private static void byteWrite() {

		// 编写一个程序，向c:/temp/abc.txt 写入100行“Hello file”
		File file = new File("c:/temp/abc.txt");
		file.getParentFile().mkdirs();// 创建文件目录

		FileOutputStream outputStream = null;
		
		try {
			//以字节流形式写文件

			if (file.exists()) {
				
				file.delete();//注意与deleOnExit的区别
				System.out.println("删除成功");
			}
			file.createNewFile();
		    System.out.println("成功创建");
			outputStream = new FileOutputStream(file);
			
			
				for (int i = 0; i < 100; i++) {

					String str = "Hello file"+i+"\r\n";
					byte[] b = str.getBytes();//字节流写数据时需要把数据转换成字节数组
					outputStream.write(b);//把字节数组写入到文件中（从程序输出到文件）
				outputStream.flush();//强制刷新缓冲，把数据输出到文件中
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			if(outputStream!=null) {
				try {
					outputStream.close();
				} catch (IOException e) {
					
				}
			}
		}

		
	}

}
